/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package data_main;

import data_habitacion.Thabitacion;
import data_cliente.Tcliente;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.io.Serializable;


/**
 *clase principal para la administracion del hotel
 *nos permite guardar y cargar las habitaciones
 * @author userlab02
 */
public class Thotel {
 List<Tcliente> lista_clientes= new ArrayList<Tcliente>();
 List<Thabitacion> lista_habitaciones= new ArrayList<Thabitacion>();
 /**
  * constructor
  */
 public Thotel()
 {
 }
 /**
  * 
  * @param client       instancia del cliente a guardar
  */
 public void nuevo_cliente(Tcliente client)
 {
     client.id_cliente=lista_clientes.size();
     lista_clientes.add(client);
 }
 /**
  * 
  * @param habitacion   instancia de la habitacion a guardar
  */
 public void nueva_habitacion(Thabitacion habitacion)
 {
     habitacion.id_habitacion=lista_habitaciones.size();
     lista_habitaciones.add(habitacion);
 }

 /**
  * 
  * @param identificacion
  */
 public void eliminar_cliente(String identificacion)
 {
    int index=buscar_cliente(identificacion);
    if(index>-1)lista_clientes.remove(index);
 }
 /**
  * 
  * @param identificacion   numero de identificacion cedula o DPI
  * @return
  */
 public int buscar_cliente(String identificacion){
    Iterator clientes = lista_clientes.iterator();
    int index=-1;
    int i=0;
    while(clientes.hasNext()){
        Tcliente c = (Tcliente)clientes.next();
        if(c.cedula_dpi.equals(identificacion)){
            index=i;
        }
        i++;
    }
    return index;
}
/**
 * 
 * @param num_hab   numero fisico de la habitacion
 * @return          retorna el index en la lista
 */
public int buscar_habitacion(String num_hab){
    Iterator habitaciones = lista_habitaciones.iterator();
    int index=-1;
    int i=0;
    while(habitaciones.hasNext()){
        Tcliente c = (Tcliente)habitaciones.next();
        if(c.cedula_dpi.equals(num_hab)){
            index=i;
        }
        i++;
    }
    return index;
}
/**
 * busca la habitacion deseada
 * @param num_hab           numero de la habitacion         
 * @param identificacion    cedula o dpi del cliente
 */
public void asigna_habitacion(String num_hab,String identificacion){
    int index_hab= buscar_habitacion(num_hab);
    int index_client= buscar_cliente(identificacion);
    lista_habitaciones.get(index_hab).set_ocupado();
    lista_habitaciones.get(index_hab).id_cliente=index_client;
}
/**
 * libera la habitacion
 * @param num_hab       numero de habitacion desada a liberar
 */
public void egreso_habitacion(String num_hab){
    int index_hab= buscar_habitacion(num_hab);
    lista_habitaciones.get(index_hab).set_libre();
    lista_habitaciones.get(index_hab).id_cliente=0;
}

}
